@conveyorhq/arrow-ds 1.150.0 → 1.152.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/package.json +1 -1
- package/public/components/Floating/FloatingTooltip.d.ts +3 -2
- package/public/components/Floating/FloatingTooltip.js +2 -2
- package/public/components/Marquee/Marquee.d.ts +21 -0
- package/public/components/Marquee/Marquee.js +159 -0
- package/public/components/Marquee/index.d.ts +1 -0
- package/public/components/Marquee/index.js +17 -0
- package/public/css/styles.css +114 -0
- package/public/css/styles.min.css +1 -1
- package/public/css/styles.min.css.map +1 -1
- package/public/index.d.ts +1 -0
- package/public/index.js +1 -0
- package/src/components/Floating/FloatingTooltip.tsx +4 -2
- package/src/components/Marquee/Marquee.stories.mdx +29 -0
- package/src/components/Marquee/Marquee.tsx +338 -0
- package/src/components/Marquee/index.css +80 -0
- package/src/components/Marquee/index.ts +1 -0
- package/src/css/components.css +1 -0
- package/src/css/utilities/animations.css +9 -0
- package/src/index.ts +1 -0
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { HTMLProps, PropsWithChildren } from "react";
|
|
2
|
-
import type { Placement, Strategy } from "@floating-ui/react";
|
|
2
|
+
import type { OffsetOptions, Placement, Strategy } from "@floating-ui/react";
|
|
3
3
|
import { PortalRootElementType } from "../Portal";
|
|
4
4
|
interface FloatingTooltipOptions {
|
|
5
5
|
initialOpen?: boolean;
|
|
@@ -8,8 +8,9 @@ interface FloatingTooltipOptions {
|
|
|
8
8
|
onOpenChange?: (open: boolean) => void;
|
|
9
9
|
strategy?: Strategy;
|
|
10
10
|
disableShiftMiddleware?: boolean;
|
|
11
|
+
offset?: OffsetOptions;
|
|
11
12
|
}
|
|
12
|
-
export declare function useFloatingTooltip({ initialOpen, placement, open: controlledOpen, onOpenChange: setControlledOpen, strategy, disableShiftMiddleware, }?: FloatingTooltipOptions): any;
|
|
13
|
+
export declare function useFloatingTooltip({ initialOpen, placement, open: controlledOpen, onOpenChange: setControlledOpen, strategy, disableShiftMiddleware, offset: offsetValue, }?: FloatingTooltipOptions): any;
|
|
13
14
|
export declare const useFloatingTooltipState: any;
|
|
14
15
|
export declare function FloatingTooltipRoot({ children, ...options }: PropsWithChildren<FloatingTooltipOptions>): React.JSX.Element;
|
|
15
16
|
export declare const FloatingTooltipTrigger: React.ForwardRefExoticComponent<Omit<React.HTMLProps<HTMLElement> & {
|
|
@@ -35,7 +35,7 @@ const tokens_1 = require("../../style-dictionary/dist/tokens");
|
|
|
35
35
|
const bem_1 = require("../../utilities/bem");
|
|
36
36
|
const Box_1 = require("../Box");
|
|
37
37
|
const cn = (0, bem_1.bemHOF)("FloatingTooltip");
|
|
38
|
-
function useFloatingTooltip({ initialOpen = false, placement = "top", open: controlledOpen, onOpenChange: setControlledOpen, strategy, disableShiftMiddleware, } = {}) {
|
|
38
|
+
function useFloatingTooltip({ initialOpen = false, placement = "top", open: controlledOpen, onOpenChange: setControlledOpen, strategy, disableShiftMiddleware, offset: offsetValue = 8, } = {}) {
|
|
39
39
|
const [uncontrolledOpen, setUncontrolledOpen] = (0, react_1.useState)(initialOpen);
|
|
40
40
|
const arrowRef = (0, react_1.useRef)(null);
|
|
41
41
|
const open = controlledOpen !== null && controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
|
|
@@ -47,7 +47,7 @@ function useFloatingTooltip({ initialOpen = false, placement = "top", open: cont
|
|
|
47
47
|
onOpenChange: setOpen,
|
|
48
48
|
whileElementsMounted: react_2.autoUpdate,
|
|
49
49
|
middleware: [
|
|
50
|
-
(0, react_2.offset)(
|
|
50
|
+
(0, react_2.offset)(offsetValue),
|
|
51
51
|
(0, react_2.flip)(),
|
|
52
52
|
...shiftMiddleware,
|
|
53
53
|
(0, react_2.arrow)({ element: arrowRef }),
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { ReactNode, CSSProperties, RefAttributes } from "react";
|
|
2
|
+
export type MarqueeProps = {
|
|
3
|
+
style?: CSSProperties;
|
|
4
|
+
className?: string;
|
|
5
|
+
autoFill?: boolean;
|
|
6
|
+
play?: boolean;
|
|
7
|
+
pauseOnHover?: boolean;
|
|
8
|
+
pauseOnClick?: boolean;
|
|
9
|
+
direction?: "left" | "right" | "up" | "down";
|
|
10
|
+
speed?: number;
|
|
11
|
+
delay?: number;
|
|
12
|
+
loop?: number;
|
|
13
|
+
gradient?: boolean;
|
|
14
|
+
gradientColor?: string;
|
|
15
|
+
gradientWidth?: number | string;
|
|
16
|
+
onFinish?: () => void;
|
|
17
|
+
onCycleComplete?: () => void;
|
|
18
|
+
onMount?: () => void;
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
} & RefAttributes<HTMLDivElement>;
|
|
21
|
+
export declare const Marquee: React.ForwardRefExoticComponent<Omit<MarqueeProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.Marquee = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
32
|
+
const utilities_1 = require("../../utilities");
|
|
33
|
+
const Box_1 = require("../Box");
|
|
34
|
+
const cn = (0, utilities_1.bemHOF)("Marquee");
|
|
35
|
+
const MarqueeChild = ({ children, style, }) => {
|
|
36
|
+
return (react_1.default.createElement(Box_1.Box, { className: cn({ e: "child" }), style: style }, children));
|
|
37
|
+
};
|
|
38
|
+
const MarqueeContent = ({ children, ...props }) => {
|
|
39
|
+
return (react_1.default.createElement(Box_1.Box, { className: cn({ e: "content" }), ...props }, children));
|
|
40
|
+
};
|
|
41
|
+
const MarqueeGradient = ({ style }) => {
|
|
42
|
+
return react_1.default.createElement(Box_1.Box, { className: cn({ e: "overlay" }), style: style });
|
|
43
|
+
};
|
|
44
|
+
exports.Marquee = (0, react_1.forwardRef)(function Marquee({ style = {}, className = "", autoFill = false, play = true, pauseOnHover = false, pauseOnClick = false, direction = "left", speed = 50, delay = 0, loop = 0, gradient = false, gradientColor = "white", gradientWidth = 200, onFinish, onCycleComplete, onMount, children, }, ref) {
|
|
45
|
+
const [containerWidth, setContainerWidth] = (0, react_1.useState)(0);
|
|
46
|
+
const [marqueeWidth, setMarqueeWidth] = (0, react_1.useState)(0);
|
|
47
|
+
const [multiplier, setMultiplier] = (0, react_1.useState)(1);
|
|
48
|
+
const [isMounted, setIsMounted] = (0, react_1.useState)(false);
|
|
49
|
+
const rootRef = (0, react_1.useRef)(null);
|
|
50
|
+
const containerRef = ref || rootRef;
|
|
51
|
+
const childrenRef = (0, react_1.useRef)(null);
|
|
52
|
+
const calculateWidth = (0, react_1.useCallback)(() => {
|
|
53
|
+
if (childrenRef.current && containerRef.current) {
|
|
54
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
55
|
+
const marqueeRect = childrenRef.current.getBoundingClientRect();
|
|
56
|
+
let containerRectWidth = containerRect.width;
|
|
57
|
+
let marqueeRectWidth = marqueeRect.width;
|
|
58
|
+
if (direction === "up" || direction === "down") {
|
|
59
|
+
containerRectWidth = containerRect.height;
|
|
60
|
+
marqueeRectWidth = marqueeRect.height;
|
|
61
|
+
}
|
|
62
|
+
if (autoFill && containerRectWidth && marqueeRectWidth) {
|
|
63
|
+
setMultiplier(marqueeRectWidth < containerRectWidth
|
|
64
|
+
? Math.ceil(containerRectWidth / marqueeRectWidth)
|
|
65
|
+
: 1);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
setMultiplier(1);
|
|
69
|
+
}
|
|
70
|
+
setContainerWidth(containerRectWidth);
|
|
71
|
+
setMarqueeWidth(marqueeRectWidth);
|
|
72
|
+
}
|
|
73
|
+
}, [autoFill, containerRef, direction]);
|
|
74
|
+
(0, react_1.useEffect)(() => {
|
|
75
|
+
if (!isMounted)
|
|
76
|
+
return;
|
|
77
|
+
calculateWidth();
|
|
78
|
+
if (childrenRef.current && containerRef.current) {
|
|
79
|
+
const resizeObserver = new ResizeObserver(() => calculateWidth());
|
|
80
|
+
resizeObserver.observe(containerRef.current);
|
|
81
|
+
resizeObserver.observe(childrenRef.current);
|
|
82
|
+
return () => {
|
|
83
|
+
if (!resizeObserver)
|
|
84
|
+
return;
|
|
85
|
+
resizeObserver.disconnect();
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}, [calculateWidth, containerRef, isMounted]);
|
|
89
|
+
(0, react_1.useEffect)(() => {
|
|
90
|
+
calculateWidth();
|
|
91
|
+
}, [calculateWidth, children]);
|
|
92
|
+
(0, react_1.useEffect)(() => {
|
|
93
|
+
setIsMounted(true);
|
|
94
|
+
}, []);
|
|
95
|
+
(0, react_1.useEffect)(() => {
|
|
96
|
+
if (typeof onMount === "function") {
|
|
97
|
+
onMount();
|
|
98
|
+
}
|
|
99
|
+
}, [onMount]);
|
|
100
|
+
const duration = (0, react_1.useMemo)(() => {
|
|
101
|
+
if (autoFill) {
|
|
102
|
+
return (marqueeWidth * multiplier) / speed;
|
|
103
|
+
}
|
|
104
|
+
return marqueeWidth < containerWidth
|
|
105
|
+
? containerWidth / speed
|
|
106
|
+
: marqueeWidth / speed;
|
|
107
|
+
}, [autoFill, containerWidth, marqueeWidth, multiplier, speed]);
|
|
108
|
+
const rootStyle = (0, react_1.useMemo)(() => ({
|
|
109
|
+
...style,
|
|
110
|
+
["--ads-marquee-pause-on-hover"]: !play || pauseOnHover ? "paused" : "running",
|
|
111
|
+
["--ads-marquee-pause-on-click"]: !play || (pauseOnHover && !pauseOnClick) || pauseOnClick
|
|
112
|
+
? "paused"
|
|
113
|
+
: "running",
|
|
114
|
+
["--ads-marquee-width"]: direction === "up" || direction === "down" ? `100vh` : "100%",
|
|
115
|
+
["--ads-marquee-transform"]: direction === "up"
|
|
116
|
+
? "rotate(-90deg)"
|
|
117
|
+
: direction === "down"
|
|
118
|
+
? "rotate(90deg)"
|
|
119
|
+
: "none",
|
|
120
|
+
}), [style, play, pauseOnHover, pauseOnClick, direction]);
|
|
121
|
+
const gradientStyle = (0, react_1.useMemo)(() => ({
|
|
122
|
+
["--ads-marquee-gradient-color"]: gradientColor,
|
|
123
|
+
["--ads-marquee-gradient-width"]: typeof gradientWidth === "number"
|
|
124
|
+
? `${gradientWidth}px`
|
|
125
|
+
: gradientWidth,
|
|
126
|
+
}), [gradientColor, gradientWidth]);
|
|
127
|
+
const contentStyle = (0, react_1.useMemo)(() => ({
|
|
128
|
+
["--ads-marquee-play"]: play ? "running" : "paused",
|
|
129
|
+
["--ads-marquee-direction"]: direction === "left" ? "normal" : "reverse",
|
|
130
|
+
["--ads-marquee-duration"]: `${duration}s`,
|
|
131
|
+
["--ads-marquee-delay"]: `${delay}s`,
|
|
132
|
+
["--ads-marquee-iteration-count"]: loop !== 0 ? `${loop}` : "infinite",
|
|
133
|
+
["--ads-marquee-min-width"]: autoFill ? `auto` : "100%",
|
|
134
|
+
}), [play, direction, duration, delay, loop, autoFill]);
|
|
135
|
+
const childStyle = (0, react_1.useMemo)(() => ({
|
|
136
|
+
["--ads-marquee-transform"]: direction === "up"
|
|
137
|
+
? "rotate(90deg)"
|
|
138
|
+
: direction === "down"
|
|
139
|
+
? "rotate(-90deg)"
|
|
140
|
+
: "none",
|
|
141
|
+
}), [direction]);
|
|
142
|
+
const multiplyChildren = (0, react_1.useCallback)((childrenMultiplier) => {
|
|
143
|
+
return [
|
|
144
|
+
...Array(Number.isFinite(childrenMultiplier) && childrenMultiplier >= 0
|
|
145
|
+
? childrenMultiplier
|
|
146
|
+
: 0),
|
|
147
|
+
].map((_, i) => (react_1.default.createElement(react_1.Fragment, { key: i }, react_1.Children.map(children, (child) => {
|
|
148
|
+
return react_1.default.createElement(MarqueeChild, { style: childStyle }, child);
|
|
149
|
+
}))));
|
|
150
|
+
}, [childStyle, children]);
|
|
151
|
+
return !isMounted ? null : (react_1.default.createElement(Box_1.Box, { ref: containerRef, className: (0, classnames_1.default)(cn(), className), style: rootStyle },
|
|
152
|
+
gradient && react_1.default.createElement(MarqueeGradient, { style: gradientStyle }),
|
|
153
|
+
react_1.default.createElement(MarqueeContent, { onAnimationIteration: onCycleComplete, onAnimationEnd: onFinish, style: contentStyle },
|
|
154
|
+
react_1.default.createElement(Box_1.Box, { ref: childrenRef, className: cn({ e: "children" }) }, react_1.Children.map(children, (child) => {
|
|
155
|
+
return react_1.default.createElement(MarqueeChild, { style: childStyle }, child);
|
|
156
|
+
})),
|
|
157
|
+
multiplyChildren(multiplier - 1)),
|
|
158
|
+
react_1.default.createElement(MarqueeContent, { style: contentStyle }, multiplyChildren(multiplier))));
|
|
159
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Marquee";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Marquee"), exports);
|
package/public/css/styles.css
CHANGED
|
@@ -4757,6 +4757,98 @@ override built-in Image component classes */
|
|
|
4757
4757
|
border-color: rgb(222 231 238 / var(--tw-border-opacity));
|
|
4758
4758
|
}
|
|
4759
4759
|
|
|
4760
|
+
.ads-Marquee {
|
|
4761
|
+
position: relative;
|
|
4762
|
+
display: flex;
|
|
4763
|
+
flex-direction: row;
|
|
4764
|
+
overflow-x: hidden;
|
|
4765
|
+
|
|
4766
|
+
width: var(--ads-marquee-width);
|
|
4767
|
+
-webkit-transform: var(--ads-marquee-transform);
|
|
4768
|
+
transform: var(--ads-marquee-transform);
|
|
4769
|
+
}
|
|
4770
|
+
|
|
4771
|
+
.ads-Marquee:hover div {
|
|
4772
|
+
-webkit-animation-play-state: var(--ads-marquee-pause-on-hover);
|
|
4773
|
+
animation-play-state: var(--ads-marquee-pause-on-hover);
|
|
4774
|
+
}
|
|
4775
|
+
|
|
4776
|
+
.ads-Marquee:active div {
|
|
4777
|
+
-webkit-animation-play-state: var(--ads-marquee-pause-on-click);
|
|
4778
|
+
animation-play-state: var(--ads-marquee-pause-on-click);
|
|
4779
|
+
}
|
|
4780
|
+
|
|
4781
|
+
.ads-Marquee-overlay {
|
|
4782
|
+
position: absolute;
|
|
4783
|
+
height: 100%;
|
|
4784
|
+
width: 100%;
|
|
4785
|
+
}
|
|
4786
|
+
|
|
4787
|
+
.ads-Marquee-overlay::before,
|
|
4788
|
+
.ads-Marquee-overlay::after {
|
|
4789
|
+
pointer-events: none;
|
|
4790
|
+
position: absolute;
|
|
4791
|
+
height: 100%;
|
|
4792
|
+
touch-action: none;
|
|
4793
|
+
|
|
4794
|
+
background: linear-gradient(
|
|
4795
|
+
to right,
|
|
4796
|
+
var(--ads-marquee-gradient-color),
|
|
4797
|
+
rgb(255, 255, 255, 0)
|
|
4798
|
+
);
|
|
4799
|
+
content: "";
|
|
4800
|
+
width: var(--ads-marquee-gradient-width);
|
|
4801
|
+
z-index: 2;
|
|
4802
|
+
}
|
|
4803
|
+
|
|
4804
|
+
.ads-Marquee-overlay::after {
|
|
4805
|
+
right: 0;
|
|
4806
|
+
top: 0;
|
|
4807
|
+
|
|
4808
|
+
-webkit-transform: rotateZ(180deg);
|
|
4809
|
+
|
|
4810
|
+
transform: rotateZ(180deg);
|
|
4811
|
+
}
|
|
4812
|
+
|
|
4813
|
+
.ads-Marquee-overlay::before {
|
|
4814
|
+
left: 0;
|
|
4815
|
+
top: 0;
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4818
|
+
.ads-Marquee-content {
|
|
4819
|
+
z-index: 1;
|
|
4820
|
+
display: flex;
|
|
4821
|
+
flex-direction: row;
|
|
4822
|
+
align-items: center;
|
|
4823
|
+
|
|
4824
|
+
flex: 0 0 auto;
|
|
4825
|
+
min-width: var(--ads-marquee-min-width);
|
|
4826
|
+
-webkit-animation: marquee-scroll var(--ads-marquee-duration) linear
|
|
4827
|
+
var(--ads-marquee-delay) var(--ads-marquee-iteration-count);
|
|
4828
|
+
animation: marquee-scroll var(--ads-marquee-duration) linear
|
|
4829
|
+
var(--ads-marquee-delay) var(--ads-marquee-iteration-count);
|
|
4830
|
+
-webkit-animation-play-state: var(--ads-marquee-play);
|
|
4831
|
+
animation-play-state: var(--ads-marquee-play);
|
|
4832
|
+
-webkit-animation-delay: var(--ads-marquee-delay);
|
|
4833
|
+
animation-delay: var(--ads-marquee-delay);
|
|
4834
|
+
-webkit-animation-direction: var(--ads-marquee-direction);
|
|
4835
|
+
animation-direction: var(--ads-marquee-direction);
|
|
4836
|
+
}
|
|
4837
|
+
|
|
4838
|
+
.ads-Marquee-children {
|
|
4839
|
+
display: flex;
|
|
4840
|
+
min-width: auto;
|
|
4841
|
+
flex-direction: row;
|
|
4842
|
+
align-items: center;
|
|
4843
|
+
|
|
4844
|
+
flex: 0 0 auto;
|
|
4845
|
+
}
|
|
4846
|
+
|
|
4847
|
+
.ads-Marquee-child {
|
|
4848
|
+
-webkit-transform: var(--ads-marquee-transform);
|
|
4849
|
+
transform: var(--ads-marquee-transform);
|
|
4850
|
+
}
|
|
4851
|
+
|
|
4760
4852
|
.ads-Menu {
|
|
4761
4853
|
display: inline-flex;
|
|
4762
4854
|
}
|
|
@@ -9085,6 +9177,28 @@ override built-in Image component classes */
|
|
|
9085
9177
|
}
|
|
9086
9178
|
}
|
|
9087
9179
|
|
|
9180
|
+
@-webkit-keyframes marquee-scroll {
|
|
9181
|
+
0% {
|
|
9182
|
+
-webkit-transform: translateX(0%);
|
|
9183
|
+
transform: translateX(0%);
|
|
9184
|
+
}
|
|
9185
|
+
100% {
|
|
9186
|
+
-webkit-transform: translateX(-100%);
|
|
9187
|
+
transform: translateX(-100%);
|
|
9188
|
+
}
|
|
9189
|
+
}
|
|
9190
|
+
|
|
9191
|
+
@keyframes marquee-scroll {
|
|
9192
|
+
0% {
|
|
9193
|
+
-webkit-transform: translateX(0%);
|
|
9194
|
+
transform: translateX(0%);
|
|
9195
|
+
}
|
|
9196
|
+
100% {
|
|
9197
|
+
-webkit-transform: translateX(-100%);
|
|
9198
|
+
transform: translateX(-100%);
|
|
9199
|
+
}
|
|
9200
|
+
}
|
|
9201
|
+
|
|
9088
9202
|
.animated {
|
|
9089
9203
|
-webkit-animation-duration: 500ms;
|
|
9090
9204
|
animation-duration: 500ms;
|