@once-ui-system/core 1.4.32 → 1.5.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/.eslintrc.json +3 -3
- package/{LICENSE → LICENSE.md} +1 -1
- package/dist/components/Animation.d.ts +34 -0
- package/dist/components/Animation.d.ts.map +1 -0
- package/dist/components/Animation.js +230 -0
- package/dist/components/Animation.js.map +1 -0
- package/dist/components/ArrowNavigationContext.d.ts.map +1 -1
- package/dist/components/ArrowNavigationContext.js +2 -1
- package/dist/components/ArrowNavigationContext.js.map +1 -1
- package/dist/components/AutoScroll.module.scss +8 -8
- package/dist/components/Background.d.ts.map +1 -1
- package/dist/components/Background.js +23 -15
- package/dist/components/Background.js.map +1 -1
- package/dist/components/Button.d.ts +1 -0
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +2 -2
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/Card.js +2 -4
- package/dist/components/Card.js.map +1 -1
- package/dist/components/Card.module.scss +4 -2
- package/dist/components/Carousel.module.scss +31 -31
- package/dist/components/ClientFlex.d.ts.map +1 -1
- package/dist/components/ClientFlex.js +8 -58
- package/dist/components/ClientFlex.js.map +1 -1
- package/dist/components/ClientGrid.d.ts.map +1 -1
- package/dist/components/ClientGrid.js +8 -58
- package/dist/components/ClientGrid.js.map +1 -1
- package/dist/components/ColorInput.d.ts.map +1 -1
- package/dist/components/ColorInput.js +5 -19
- package/dist/components/ColorInput.js.map +1 -1
- package/dist/components/CompareImage.d.ts.map +1 -1
- package/dist/components/CompareImage.js +1 -1
- package/dist/components/CompareImage.js.map +1 -1
- package/dist/components/Dialog.module.scss +32 -32
- package/dist/components/DropdownWrapper.d.ts.map +1 -1
- package/dist/components/DropdownWrapper.js +144 -30
- package/dist/components/DropdownWrapper.js.map +1 -1
- package/dist/components/EmojiPicker.d.ts.map +1 -1
- package/dist/components/EmojiPicker.js +14 -12
- package/dist/components/EmojiPicker.js.map +1 -1
- package/dist/components/EmojiPicker.module.scss +14 -0
- package/dist/components/EmojiPickerDropdown.d.ts.map +1 -1
- package/dist/components/EmojiPickerDropdown.js +1 -1
- package/dist/components/EmojiPickerDropdown.js.map +1 -1
- package/dist/components/Flex.d.ts.map +1 -1
- package/dist/components/Flex.js +1 -80
- package/dist/components/Flex.js.map +1 -1
- package/dist/components/Grid.d.ts.map +1 -1
- package/dist/components/Grid.js +1 -80
- package/dist/components/Grid.js.map +1 -1
- package/dist/components/Hover.d.ts +14 -0
- package/dist/components/Hover.d.ts.map +1 -0
- package/dist/components/Hover.js +99 -0
- package/dist/components/Hover.js.map +1 -0
- package/dist/components/Hover.module.scss +12 -0
- package/dist/components/HoverCard.d.ts +5 -0
- package/dist/components/HoverCard.d.ts.map +1 -0
- package/dist/components/HoverCard.js +10 -0
- package/dist/components/HoverCard.js.map +1 -0
- package/dist/components/HoverCard.module.scss +12 -0
- package/dist/components/Icon.d.ts.map +1 -1
- package/dist/components/Icon.js +8 -19
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton.js +9 -20
- package/dist/components/IconButton.js.map +1 -1
- package/dist/components/IconButton.module.scss +0 -24
- package/dist/components/Input.d.ts +1 -0
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +6 -2
- package/dist/components/Input.js.map +1 -1
- package/dist/components/MatrixFx.d.ts +15 -0
- package/dist/components/MatrixFx.d.ts.map +1 -0
- package/dist/components/MatrixFx.js +307 -0
- package/dist/components/MatrixFx.js.map +1 -0
- package/dist/components/Option.d.ts.map +1 -1
- package/dist/components/Option.js +38 -7
- package/dist/components/Option.js.map +1 -1
- package/dist/components/Option.module.scss +13 -10
- package/dist/components/Particle.d.ts +2 -1
- package/dist/components/Particle.d.ts.map +1 -1
- package/dist/components/Particle.js +27 -6
- package/dist/components/Particle.js.map +1 -1
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js +41 -31
- package/dist/components/Select.js.map +1 -1
- package/dist/components/ServerFlex.d.ts +1 -0
- package/dist/components/ServerFlex.d.ts.map +1 -1
- package/dist/components/ServerFlex.js +37 -22
- package/dist/components/ServerFlex.js.map +1 -1
- package/dist/components/ServerGrid.d.ts +1 -0
- package/dist/components/ServerGrid.d.ts.map +1 -1
- package/dist/components/ServerGrid.js +7 -2
- package/dist/components/ServerGrid.js.map +1 -1
- package/dist/components/SharedInteractiveStyles.module.scss +1 -1
- package/dist/components/ShineFx.d.ts +11 -0
- package/dist/components/ShineFx.d.ts.map +1 -0
- package/dist/components/ShineFx.js +15 -0
- package/dist/components/ShineFx.js.map +1 -0
- package/dist/components/ShineFx.module.scss +33 -0
- package/dist/components/Swiper.d.ts +17 -0
- package/dist/components/Swiper.d.ts.map +1 -0
- package/dist/components/Swiper.js +170 -0
- package/dist/components/Swiper.js.map +1 -0
- package/dist/components/Swiper.module.scss +31 -0
- package/dist/components/Switch.module.scss +1 -1
- package/dist/components/Textarea.d.ts +1 -0
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea.js +6 -2
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/TiltFx.d.ts +1 -0
- package/dist/components/TiltFx.d.ts.map +1 -1
- package/dist/components/TiltFx.js +5 -4
- package/dist/components/TiltFx.js.map +1 -1
- package/dist/components/Timeline.d.ts +18 -0
- package/dist/components/Timeline.d.ts.map +1 -0
- package/dist/components/Timeline.js +28 -0
- package/dist/components/Timeline.js.map +1 -0
- package/dist/components/Tooltip.d.ts +2 -2
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip.js +4 -3
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Tooltip.module.scss +14 -0
- package/dist/components/TypeFx.d.ts +15 -0
- package/dist/components/TypeFx.d.ts.map +1 -0
- package/dist/components/TypeFx.js +105 -0
- package/dist/components/TypeFx.js.map +1 -0
- package/dist/components/UserMenu.d.ts.map +1 -1
- package/dist/components/UserMenu.js +3 -3
- package/dist/components/UserMenu.js.map +1 -1
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +8 -0
- package/dist/components/index.js.map +1 -1
- package/dist/contexts/LayoutProvider.d.ts +1 -0
- package/dist/contexts/LayoutProvider.d.ts.map +1 -1
- package/dist/contexts/LayoutProvider.js +30 -4
- package/dist/contexts/LayoutProvider.js.map +1 -1
- package/dist/css/styles.css +1 -1
- package/dist/css/styles.css.map +1 -1
- package/dist/css/tokens.css +1 -1
- package/dist/css/tokens.css.map +1 -1
- package/dist/data/emoji-data.json +0 -8
- package/dist/hooks/useResponsiveClasses.d.ts +9 -0
- package/dist/hooks/useResponsiveClasses.d.ts.map +1 -0
- package/dist/hooks/useResponsiveClasses.js +250 -0
- package/dist/hooks/useResponsiveClasses.js.map +1 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +3 -1
- package/dist/icons.js.map +1 -1
- package/dist/interfaces.d.ts +1 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/modules/code/CodeBlock.d.ts.map +1 -1
- package/dist/modules/code/CodeBlock.js +17 -7
- package/dist/modules/code/CodeBlock.js.map +1 -1
- package/dist/modules/code/LineNumber.css +34 -34
- package/dist/modules/navigation/HeadingLink.d.ts +2 -2
- package/dist/modules/navigation/HeadingLink.d.ts.map +1 -1
- package/dist/modules/navigation/HeadingLink.js +3 -3
- package/dist/modules/navigation/HeadingLink.js.map +1 -1
- package/dist/modules/navigation/HeadingLink.module.scss +5 -14
- package/dist/modules/navigation/HeadingNav.d.ts +1 -0
- package/dist/modules/navigation/HeadingNav.d.ts.map +1 -1
- package/dist/modules/navigation/HeadingNav.js +32 -30
- package/dist/modules/navigation/HeadingNav.js.map +1 -1
- package/dist/modules/navigation/Kbar.d.ts.map +1 -1
- package/dist/modules/navigation/Kbar.js +40 -99
- package/dist/modules/navigation/Kbar.js.map +1 -1
- package/dist/modules/navigation/MegaMenu.d.ts +1 -0
- package/dist/modules/navigation/MegaMenu.d.ts.map +1 -1
- package/dist/modules/navigation/MegaMenu.js +121 -44
- package/dist/modules/navigation/MegaMenu.js.map +1 -1
- package/dist/package.json +10 -1
- package/dist/styles/border.scss +36 -0
- package/dist/styles/breakpoints.scss +7 -0
- package/dist/styles/display.scss +64 -0
- package/dist/styles/flex.scss +87 -0
- package/dist/styles/global.scss +3 -24
- package/dist/styles/grid.scss +58 -0
- package/dist/styles/position.scss +310 -0
- package/dist/styles/typography.scss +36 -10
- package/dist/tokens/border.scss +28 -4
- package/dist/tokens/theme.scss +2 -0
- package/dist/tokens/typography.scss +5 -1
- package/package.json +10 -1
- package/README.md +0 -159
- package/USAGE.md +0 -55
- package/dist/README.md +0 -159
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Flex, Media, Column, Row, IconButton } from ".";
|
|
4
|
+
import { useEffect, useState, useRef, useCallback } from "react";
|
|
5
|
+
import styles from "./Swiper.module.scss";
|
|
6
|
+
const Swiper = ({ items = [], fill = false, controls = true, priority = false, indicator = true, aspectRatio = "16 / 9", sizes, ...rest }) => {
|
|
7
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
8
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
9
|
+
const scrollContainerRef = useRef(null);
|
|
10
|
+
const slideRefs = useRef([]);
|
|
11
|
+
const isScrollingProgrammatically = useRef(false);
|
|
12
|
+
const dragStartX = useRef(0);
|
|
13
|
+
const scrollStartLeft = useRef(0);
|
|
14
|
+
const [scrollSnapType, setScrollSnapType] = useState("x mandatory");
|
|
15
|
+
// Observe scroll position to update active index
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const container = scrollContainerRef.current;
|
|
18
|
+
if (!container)
|
|
19
|
+
return;
|
|
20
|
+
const handleScroll = () => {
|
|
21
|
+
if (isScrollingProgrammatically.current)
|
|
22
|
+
return;
|
|
23
|
+
const scrollLeft = container.scrollLeft;
|
|
24
|
+
const slideWidth = container.clientWidth;
|
|
25
|
+
const newIndex = Math.round(scrollLeft / slideWidth);
|
|
26
|
+
if (newIndex !== activeIndex && newIndex >= 0 && newIndex < items.length) {
|
|
27
|
+
setActiveIndex(newIndex);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
// Use Intersection Observer for more accurate detection
|
|
31
|
+
const observerOptions = {
|
|
32
|
+
root: container,
|
|
33
|
+
threshold: 0.5,
|
|
34
|
+
};
|
|
35
|
+
const observer = new IntersectionObserver((entries) => {
|
|
36
|
+
entries.forEach((entry) => {
|
|
37
|
+
if (entry.isIntersecting) {
|
|
38
|
+
const index = slideRefs.current.indexOf(entry.target);
|
|
39
|
+
if (index !== -1 && index !== activeIndex) {
|
|
40
|
+
setActiveIndex(index);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}, observerOptions);
|
|
45
|
+
slideRefs.current.forEach((slide) => {
|
|
46
|
+
if (slide)
|
|
47
|
+
observer.observe(slide);
|
|
48
|
+
});
|
|
49
|
+
container.addEventListener("scroll", handleScroll, { passive: true });
|
|
50
|
+
return () => {
|
|
51
|
+
observer.disconnect();
|
|
52
|
+
container.removeEventListener("scroll", handleScroll);
|
|
53
|
+
};
|
|
54
|
+
}, [activeIndex, items.length]);
|
|
55
|
+
const scrollToIndex = useCallback((index) => {
|
|
56
|
+
const container = scrollContainerRef.current;
|
|
57
|
+
if (!container)
|
|
58
|
+
return;
|
|
59
|
+
isScrollingProgrammatically.current = true;
|
|
60
|
+
const slideWidth = container.clientWidth;
|
|
61
|
+
container.scrollTo({
|
|
62
|
+
left: slideWidth * index,
|
|
63
|
+
behavior: "smooth",
|
|
64
|
+
});
|
|
65
|
+
// Reset flag after scroll animation completes
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
isScrollingProgrammatically.current = false;
|
|
68
|
+
setActiveIndex(index);
|
|
69
|
+
}, 500);
|
|
70
|
+
}, []);
|
|
71
|
+
const handlePrevClick = () => {
|
|
72
|
+
if (activeIndex > 0) {
|
|
73
|
+
scrollToIndex(activeIndex - 1);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const handleNextClick = () => {
|
|
77
|
+
if (activeIndex < items.length - 1) {
|
|
78
|
+
scrollToIndex(activeIndex + 1);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const handleDotClick = (index) => {
|
|
82
|
+
scrollToIndex(index);
|
|
83
|
+
};
|
|
84
|
+
// Drag-to-scroll handlers
|
|
85
|
+
const handleMouseDown = (e) => {
|
|
86
|
+
const container = scrollContainerRef.current;
|
|
87
|
+
if (!container)
|
|
88
|
+
return;
|
|
89
|
+
setIsDragging(true);
|
|
90
|
+
setScrollSnapType("none"); // Disable snap during drag
|
|
91
|
+
dragStartX.current = e.pageX;
|
|
92
|
+
scrollStartLeft.current = container.scrollLeft;
|
|
93
|
+
};
|
|
94
|
+
// Use native event listeners for global mouse tracking
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (!isDragging)
|
|
97
|
+
return;
|
|
98
|
+
const container = scrollContainerRef.current;
|
|
99
|
+
if (!container)
|
|
100
|
+
return;
|
|
101
|
+
const handleMouseMove = (e) => {
|
|
102
|
+
e.preventDefault();
|
|
103
|
+
const x = e.pageX;
|
|
104
|
+
const walk = (dragStartX.current - x) * 1.5; // Drag sensitivity
|
|
105
|
+
container.scrollLeft = scrollStartLeft.current + walk;
|
|
106
|
+
};
|
|
107
|
+
const handleMouseUp = () => {
|
|
108
|
+
// Find the nearest slide and snap to it
|
|
109
|
+
const slideWidth = container.clientWidth;
|
|
110
|
+
const currentScroll = container.scrollLeft;
|
|
111
|
+
const nearestIndex = Math.round(currentScroll / slideWidth);
|
|
112
|
+
const targetScroll = nearestIndex * slideWidth;
|
|
113
|
+
// Smooth scroll to nearest slide
|
|
114
|
+
container.scrollTo({
|
|
115
|
+
left: targetScroll,
|
|
116
|
+
behavior: 'smooth'
|
|
117
|
+
});
|
|
118
|
+
setActiveIndex(nearestIndex);
|
|
119
|
+
setIsDragging(false);
|
|
120
|
+
// Re-enable snap after a brief delay to let smooth scroll complete
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
setScrollSnapType("x mandatory");
|
|
123
|
+
}, 300);
|
|
124
|
+
};
|
|
125
|
+
// Add global listeners to track mouse anywhere
|
|
126
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
127
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
128
|
+
return () => {
|
|
129
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
130
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
131
|
+
};
|
|
132
|
+
}, [isDragging]);
|
|
133
|
+
if (items.length === 0) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
return (_jsxs(Column, { fillWidth: true, fillHeight: fill, aspectRatio: undefined, style: { isolation: "isolate" }, ...rest, children: [_jsxs(Flex, { fillWidth: true, fillHeight: fill, aspectRatio: aspectRatio === "original" ? undefined : aspectRatio, className: styles.carouselContainer, children: [_jsx(Flex, { fillWidth: true, fillHeight: fill, radius: rest.radius || "l", border: rest.border || "neutral-alpha-weak", overflow: "hidden", children: _jsx(Row, { ref: scrollContainerRef, fillWidth: true, fillHeight: fill, className: styles.scrollContainer, onMouseDown: handleMouseDown, overflowX: "auto", style: {
|
|
137
|
+
scrollSnapType: scrollSnapType,
|
|
138
|
+
scrollbarWidth: "none",
|
|
139
|
+
msOverflowStyle: "none",
|
|
140
|
+
WebkitOverflowScrolling: "touch",
|
|
141
|
+
cursor: isDragging ? "grabbing" : "grab",
|
|
142
|
+
userSelect: "none",
|
|
143
|
+
}, children: items.map((item, index) => (_jsx(Flex, { ref: (el) => {
|
|
144
|
+
slideRefs.current[index] = el;
|
|
145
|
+
}, fillWidth: true, fillHeight: fill, className: styles.slide, style: {
|
|
146
|
+
scrollSnapAlign: "start",
|
|
147
|
+
scrollSnapStop: "always",
|
|
148
|
+
flexShrink: 0,
|
|
149
|
+
}, children: typeof item.slide === "string" ? (_jsx(Media, { fill: fill, sizes: sizes, priority: priority && index === 0, aspectRatio: fill ? undefined : aspectRatio === "auto" ? undefined : aspectRatio, src: item.slide, alt: item.alt || "", onDragStart: (e) => e.preventDefault(), style: {
|
|
150
|
+
userSelect: "none",
|
|
151
|
+
} })) : (_jsx(Flex, { fill: true, aspectRatio: fill ? undefined : aspectRatio === "auto" ? undefined : aspectRatio, onDragStart: (e) => e.preventDefault(), style: {
|
|
152
|
+
userSelect: "none",
|
|
153
|
+
}, children: item.slide })) }, index))) }) }), controls && items.length > 1 && (_jsxs(_Fragment, { children: [activeIndex > 0 && (_jsx(Flex, { position: "absolute", left: "16", zIndex: 1, className: styles.navButton, style: { top: "50%", transform: "translateY(-50%)" }, children: _jsx(Flex, { radius: "l", background: "surface", overflow: "hidden", children: _jsx(IconButton, { onClick: handlePrevClick, variant: "secondary", icon: "chevronLeft", "aria-label": "Previous slide" }) }) })), activeIndex < items.length - 1 && (_jsx(Flex, { position: "absolute", right: "16", zIndex: 1, className: styles.navButton, style: { top: "50%", transform: "translateY(-50%)" }, children: _jsx(Flex, { radius: "l", background: "surface", overflow: "hidden", children: _jsx(IconButton, { onClick: handleNextClick, variant: "secondary", icon: "chevronRight", "aria-label": "Next slide" }) }) }))] }))] }), indicator && items.length > 1 && (_jsx(Row, { gap: "8", fillWidth: true, horizontal: "center", paddingX: "16", paddingTop: controls === "contained" ? undefined : "12", position: controls === "contained" ? "absolute" : "relative", bottom: controls === "contained" ? "16" : undefined, style: {
|
|
154
|
+
transform: controls === "contained" ? "translateY(-100%)" : undefined,
|
|
155
|
+
}, children: items.map((_, index) => (_jsx(Flex, { radius: "full", cursor: "interactive", onClick: () => handleDotClick(index), width: "8", height: "8", style: {
|
|
156
|
+
background: activeIndex === index
|
|
157
|
+
? "var(--neutral-on-background-strong)"
|
|
158
|
+
: "var(--neutral-alpha-medium)",
|
|
159
|
+
transition: "background 0.3s ease, transform 0.3s ease",
|
|
160
|
+
transform: activeIndex === index ? "scale(1.2)" : "scale(1)",
|
|
161
|
+
}, "aria-label": `Go to slide ${index + 1}`, role: "button", tabIndex: 0, onKeyDown: (e) => {
|
|
162
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
163
|
+
e.preventDefault();
|
|
164
|
+
handleDotClick(index);
|
|
165
|
+
}
|
|
166
|
+
} }, index))) }))] }));
|
|
167
|
+
};
|
|
168
|
+
Swiper.displayName = "Swiper";
|
|
169
|
+
export { Swiper };
|
|
170
|
+
//# sourceMappingURL=Swiper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Swiper.js","sourceRoot":"","sources":["../../src/components/Swiper.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAiB1C,MAAM,MAAM,GAA0B,CAAC,EACrC,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,KAAK,EACZ,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,IAAI,EAChB,WAAW,GAAG,QAAQ,EACtB,KAAK,EACL,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,CAA4B,EAAE,CAAC,CAAC;IACxD,MAAM,2BAA2B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAS,aAAa,CAAC,CAAC;IAE5E,iDAAiD;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,2BAA2B,CAAC,OAAO;gBAAE,OAAO;YAEhD,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;YACxC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;YAErD,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACzE,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,wDAAwD;QACxD,MAAM,eAAe,GAAG;YACtB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAwB,CAAC,CAAC;oBACxE,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;wBAC1C,cAAc,CAAC,KAAK,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,IAAI,KAAK;gBAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,EAAE;QAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,2BAA2B,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;QAEzC,SAAS,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,UAAU,GAAG,KAAK;YACxB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QAEH,8CAA8C;QAC9C,UAAU,CAAC,GAAG,EAAE;YACd,2BAA2B,CAAC,OAAO,GAAG,KAAK,CAAC;YAC5C,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QACvC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,0BAA0B;IAC1B,MAAM,eAAe,GAAG,CAAC,CAAmB,EAAE,EAAE;QAC9C,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B;QACtD,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC;QAC7B,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;IACjD,CAAC,CAAC;IAEF,uDAAuD;IACvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,mBAAmB;YAChE,SAAS,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QACxD,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,wCAAwC;YACxC,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC;YACzC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;YAE/C,iCAAiC;YACjC,SAAS,CAAC,QAAQ,CAAC;gBACjB,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YAEH,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7B,aAAa,CAAC,KAAK,CAAC,CAAC;YAErB,mEAAmE;YACnE,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC;QAEF,+CAA+C;QAC/C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEpD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,MAAM,IAAC,SAAS,QAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAM,IAAI,aACnG,MAAC,IAAI,IACH,SAAS,QACT,UAAU,EAAE,IAAI,EAChB,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EACjE,SAAS,EAAE,MAAM,CAAC,iBAAiB,aAGnC,KAAC,IAAI,IACH,SAAS,QACT,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,EAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,oBAAoB,EAC3C,QAAQ,EAAC,QAAQ,YAGjB,KAAC,GAAG,IACF,GAAG,EAAE,kBAAkB,EACvB,SAAS,QACT,UAAU,EAAE,IAAI,EAChB,SAAS,EAAE,MAAM,CAAC,eAAe,EACjC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE;gCACL,cAAc,EAAE,cAAc;gCAC9B,cAAc,EAAE,MAAM;gCACtB,eAAe,EAAE,MAAM;gCACvB,uBAAuB,EAAE,OAAO;gCAChC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;gCACxC,UAAU,EAAE,MAAM;6BACnB,YAEF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,KAAC,IAAI,IAEH,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;oCACV,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gCAChC,CAAC,EACD,SAAS,QACT,UAAU,EAAE,IAAI,EAChB,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,KAAK,EAAE;oCACL,eAAe,EAAE,OAAO;oCACxB,cAAc,EAAE,QAAQ;oCACxB,UAAU,EAAE,CAAC;iCACd,YAEA,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,KAAC,KAAK,IACJ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,IAAI,KAAK,KAAK,CAAC,EACjC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAChF,GAAG,EAAE,IAAI,CAAC,KAAe,EACzB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EACnB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EACtC,KAAK,EAAE;wCACL,UAAU,EAAE,MAAM;qCACnB,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IACH,IAAI,QACJ,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAChF,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EACtC,KAAK,EAAE;wCACL,UAAU,EAAE,MAAM;qCACnB,YAEA,IAAI,CAAC,KAAK,GACN,CACR,IArCI,KAAK,CAsCL,CACR,CAAC,GACI,GACD,EAGN,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAC/B,8BAEG,WAAW,GAAG,CAAC,IAAI,CAClB,KAAC,IAAI,IACH,QAAQ,EAAC,UAAU,EACnB,IAAI,EAAC,IAAI,EACT,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAEpD,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,YACrD,KAAC,UAAU,IACT,OAAO,EAAE,eAAe,EACxB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,aAAa,gBACP,gBAAgB,GAC3B,GACG,GACF,CACR,EAGA,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,IAAI,IACH,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAC,IAAI,EACV,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAEpD,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,YACrD,KAAC,UAAU,IACT,OAAO,EAAE,eAAe,EACxB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,gBACR,YAAY,GACvB,GACG,GACF,CACR,IACA,CACJ,IACI,EAGN,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,KAAC,GAAG,IACF,GAAG,EAAC,GAAG,EAAC,SAAS,QAAC,UAAU,EAAC,QAAQ,EAAC,QAAQ,EAAC,IAAI,EACnD,UAAU,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EACvD,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAC5D,MAAM,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACnD,KAAK,EAAE;oBACL,SAAS,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;iBACtE,YACA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACvB,KAAC,IAAI,IAEH,MAAM,EAAC,MAAM,EACb,MAAM,EAAC,aAAa,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,KAAK,EAAC,GAAG,EACT,MAAM,EAAC,GAAG,EACV,KAAK,EAAE;wBACL,UAAU,EACR,WAAW,KAAK,KAAK;4BACnB,CAAC,CAAC,qCAAqC;4BACvC,CAAC,CAAC,6BAA6B;wBACnC,UAAU,EAAE,2CAA2C;wBACvD,SAAS,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;qBAC7D,gBACW,eAAe,KAAK,GAAG,CAAC,EAAE,EACtC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;wBACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;4BACvC,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,cAAc,CAAC,KAAK,CAAC,CAAC;wBACxB,CAAC;oBACH,CAAC,IAtBI,KAAK,CAuBV,CACH,CAAC,GACE,CACP,IACM,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.scrollContainer {
|
|
2
|
+
&::-webkit-scrollbar {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.slide {
|
|
8
|
+
flex-shrink: 0;
|
|
9
|
+
user-select: none;
|
|
10
|
+
-webkit-user-drag: none;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.carouselContainer {
|
|
14
|
+
@media (hover: hover) and (pointer: fine) {
|
|
15
|
+
&:hover .navButton,
|
|
16
|
+
&:focus-within .navButton {
|
|
17
|
+
opacity: 1;
|
|
18
|
+
pointer-events: auto;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.navButton {
|
|
24
|
+
opacity: 0;
|
|
25
|
+
transition: opacity 0.3s ease;
|
|
26
|
+
pointer-events: none;
|
|
27
|
+
|
|
28
|
+
@media (hover: none) {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -11,6 +11,7 @@ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
|
11
11
|
className?: string;
|
|
12
12
|
hasPrefix?: ReactNode;
|
|
13
13
|
hasSuffix?: ReactNode;
|
|
14
|
+
characterCount?: boolean;
|
|
14
15
|
resize?: "horizontal" | "vertical" | "both" | "none";
|
|
15
16
|
validate?: (value: ReactNode) => ReactNode | null;
|
|
16
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAIZ,sBAAsB,EAEtB,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,UAAU,aAAc,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EACH,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,cAAc,GACd,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC;CACnD;AAED,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAIZ,sBAAsB,EAEtB,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,UAAU,aAAc,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EACH,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,cAAc,GACd,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC;CACnD;AAED,QAAA,MAAM,QAAQ,2FA+Mb,CAAC;AAIF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -5,7 +5,7 @@ import classNames from "classnames";
|
|
|
5
5
|
import { Column, Row, Text } from ".";
|
|
6
6
|
import styles from "./Input.module.scss";
|
|
7
7
|
import { useDebounce } from "../hooks/useDebounce";
|
|
8
|
-
const Textarea = forwardRef(({ id, label, placeholder, lines = 3, error = false, errorMessage, description, radius, className, hasPrefix, hasSuffix, resize = "vertical", validate, children, onFocus, onBlur, onChange, style, ...props }, ref) => {
|
|
8
|
+
const Textarea = forwardRef(({ id, label, placeholder, lines = 3, error = false, errorMessage, description, radius, className, hasPrefix, hasSuffix, characterCount, resize = "vertical", validate, children, onFocus, onBlur, onChange, style, ...props }, ref) => {
|
|
9
9
|
const [isFocused, setIsFocused] = useState(false);
|
|
10
10
|
const [isFilled, setIsFilled] = useState(!!props.value);
|
|
11
11
|
const [validationError, setValidationError] = useState(null);
|
|
@@ -88,7 +88,11 @@ const Textarea = forwardRef(({ id, label, placeholder, lines = 3, error = false,
|
|
|
88
88
|
height: height ? `${height}rem` : "auto",
|
|
89
89
|
}, onChange: handleChange }), !placeholder && (_jsx(Text, { as: "label", variant: "label-default-m", htmlFor: id, className: classNames(styles.label, styles.textareaLabel, {
|
|
90
90
|
[styles.floating]: isFocused || isFilled,
|
|
91
|
-
}), children: label })), children
|
|
91
|
+
}), children: label })), children, characterCount && props.maxLength && (_jsx(Row, { fillWidth: true, paddingLeft: "16", paddingY: "8", className: styles.suffix, children: _jsx(Text, { variant: "label-default-s", onBackground: props.maxLength - String(props.value || '').length <= 5
|
|
92
|
+
? "danger-weak"
|
|
93
|
+
: props.maxLength - String(props.value || '').length <= 10
|
|
94
|
+
? "warning-weak"
|
|
95
|
+
: "neutral-weak", children: props.maxLength - String(props.value || '').length }) }))] }), hasSuffix && (_jsx(Row, { paddingRight: "12", className: styles.suffix, children: hasSuffix }))] }), displayError && errorMessage !== false && (_jsx(Row, { paddingX: "16", id: `${id}-error`, textVariant: "body-default-s", onBackground: "danger-weak", children: displayError })), description && (_jsx(Row, { paddingX: "16", id: `${id}-description`, textVariant: "body-default-s", onBackground: "neutral-weak", children: description }))] }));
|
|
92
96
|
});
|
|
93
97
|
Textarea.displayName = "Textarea";
|
|
94
98
|
export { Textarea };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EAEV,WAAW,GAEZ,MAAM,OAAO,CAAC;AACf,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AACtC,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Textarea.js","sourceRoot":"","sources":["../../src/components/Textarea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiltFx.d.ts","sourceRoot":"","sources":["../../src/components/TiltFx.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAEzB,UAAU,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC;IAC7D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"TiltFx.d.ts","sourceRoot":"","sources":["../../src/components/TiltFx.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAEzB,UAAU,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC;IAC7D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA4DjC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useRef } from "react";
|
|
4
4
|
import styles from "./TiltFx.module.scss";
|
|
5
5
|
import { Flex } from ".";
|
|
6
|
-
const TiltFx = ({ children, ...rest }) => {
|
|
6
|
+
const TiltFx = ({ children, intensity = 1, ...rest }) => {
|
|
7
7
|
const ref = useRef(null);
|
|
8
8
|
let lastCall = 0;
|
|
9
9
|
let resetTimeout;
|
|
@@ -25,10 +25,11 @@ const TiltFx = ({ children, ...rest }) => {
|
|
|
25
25
|
const centerY = rect.height / 2;
|
|
26
26
|
const deltaX = (offsetX - centerX) / centerX;
|
|
27
27
|
const deltaY = (offsetY - centerY) / centerY;
|
|
28
|
-
const rotateX = -deltaY * 2;
|
|
29
|
-
const rotateY = -deltaX * 2;
|
|
28
|
+
const rotateX = -deltaY * 2 * intensity;
|
|
29
|
+
const rotateY = -deltaX * 2 * intensity;
|
|
30
|
+
const translateZ = 30 * intensity;
|
|
30
31
|
window.requestAnimationFrame(() => {
|
|
31
|
-
element.style.transform = `perspective(1000px) translate3d(0, 0,
|
|
32
|
+
element.style.transform = `perspective(1000px) translate3d(0, 0, ${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
|
|
32
33
|
});
|
|
33
34
|
};
|
|
34
35
|
const handleMouseLeave = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiltFx.js","sourceRoot":"","sources":["../../src/components/TiltFx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"TiltFx.js","sourceRoot":"","sources":["../../src/components/TiltFx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAOzB,MAAM,MAAM,GAA0B,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IAC7E,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAA4B,CAAC;IAEjC,MAAM,eAAe,GAAG,CAAC,CAAmC,EAAE,EAAE;QAC9D,IAAI,cAAc,IAAI,MAAM;YAAE,OAAO;QAErC,YAAY,CAAC,YAAY,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,QAAQ,GAAG,EAAE;YAAE,OAAO;QAChC,QAAQ,GAAG,GAAG,CAAC;QAEf,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;QAE7C,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;QACxC,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;QACxC,MAAM,UAAU,GAAG,EAAE,GAAG,SAAS,CAAC;QAElC,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,yCAAyC,UAAU,eAAe,OAAO,gBAAgB,OAAO,MAAM,CAAC;QACnI,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,cAAc,IAAI,MAAM;YAAE,OAAO;QAErC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,OAAO,CAAC,KAAK,CAAC,SAAS;oBACrB,sEAAsE,CAAC;YAC3E,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,EACR,QAAQ,EAAC,QAAQ,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EACxB,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,KAC1B,IAAI,YAEP,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Flex } from ".";
|
|
3
|
+
import { TShirtSizes } from "@/types";
|
|
4
|
+
export interface TimelineItem {
|
|
5
|
+
label?: React.ReactNode;
|
|
6
|
+
description?: React.ReactNode;
|
|
7
|
+
state?: "default" | "active" | "success" | "danger";
|
|
8
|
+
marker?: React.ReactNode;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
interface TimelineProps extends Omit<React.ComponentProps<typeof Flex>, 'children'> {
|
|
12
|
+
items: TimelineItem[];
|
|
13
|
+
alignment?: "left" | "right";
|
|
14
|
+
size?: TShirtSizes;
|
|
15
|
+
}
|
|
16
|
+
declare const Timeline: React.FC<TimelineProps>;
|
|
17
|
+
export { Timeline };
|
|
18
|
+
//# sourceMappingURL=Timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../src/components/Timeline.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,IAAI,EAAc,MAAM,GAAG,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC;IACjF,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4GrC,CAAC;AAIF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Column, Flex, Line, Text } from ".";
|
|
4
|
+
const Timeline = ({ items, alignment = "left", size = "m", ...flex }) => {
|
|
5
|
+
// Helper to get color variable for state
|
|
6
|
+
const getStateColor = (state) => {
|
|
7
|
+
switch (state) {
|
|
8
|
+
case "active": return "var(--brand-solid-strong)";
|
|
9
|
+
case "success": return "var(--success-solid-strong)";
|
|
10
|
+
case "danger": return "var(--danger-solid-strong)";
|
|
11
|
+
default: return "var(--neutral-solid-strong)";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return (_jsx(Column, { ...flex, children: items.map((item, index) => {
|
|
15
|
+
const state = item.state || "default";
|
|
16
|
+
const nextState = index < items.length - 1 ? (items[index + 1].state || "default") : state;
|
|
17
|
+
const currentColor = getStateColor(state);
|
|
18
|
+
const nextColor = getStateColor(nextState);
|
|
19
|
+
const isHorizontal = flex.direction === "row";
|
|
20
|
+
const gradientToNext = isHorizontal
|
|
21
|
+
? `linear-gradient(to right, ${currentColor}, ${nextColor})`
|
|
22
|
+
: `linear-gradient(to bottom, ${currentColor}, ${nextColor})`;
|
|
23
|
+
return (_jsxs(Flex, { direction: isHorizontal ? "column" : alignment === "right" ? "row-reverse" : undefined, fillWidth: true, children: [_jsxs(Column, { fillWidth: true, horizontal: "center", marginTop: isHorizontal ? undefined : index === 0 ? (size === "xl" ? "8" : size === "l" ? "12" : size === "m" ? "16" : size === "s" ? "20" : "16") : undefined, vertical: isHorizontal ? "center" : undefined, direction: isHorizontal ? "row" : "column", minWidth: !isHorizontal ? (size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48") : undefined, maxWidth: !isHorizontal ? (size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48") : undefined, children: [index !== 0 && (_jsx(Line, { vert: !isHorizontal, background: undefined, solid: state === "active" ? "brand-strong" : state === "success" ? "success-strong" : state === "danger" ? "danger-strong" : "neutral-strong", minHeight: flex.direction === "row" ? undefined : "8", maxHeight: flex.direction === "row" ? undefined : "8" })), _jsx(Flex, { fillWidth: true, center: true, radius: "full", solid: state === "active" ? "brand-strong" : state === "success" ? "success-strong" : state === "danger" ? "danger-strong" : undefined, background: state === "default" ? "neutral-weak" : undefined, border: state === "success" ? "success-strong" : state === "danger" ? "danger-strong" : state === "active" ? "brand-strong" : "neutral-strong", minHeight: size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48", maxHeight: size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48", minWidth: size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48", maxWidth: size === "xs" ? "8" : size === "s" ? "24" : size === "m" ? "32" : size === "l" ? "40" : "48", children: item.marker && (_jsx(Flex, { center: true, onSolid: state === "active" ? "brand-strong" : state === "success" ? "success-strong" : state === "danger" ? "danger-strong" : undefined, onBackground: state === "default" ? "neutral-weak" : undefined, textVariant: "label-default-m", children: item.marker })) }), index !== items.length - 1 && (_jsx(Line, { vert: !isHorizontal, background: undefined, style: { background: gradientToNext } }))] }), _jsx(Column, { fillWidth: true, paddingX: "20", paddingTop: "12", paddingBottom: "24", horizontal: isHorizontal && index === 0 ? "start" : isHorizontal && index === items.length - 1 ? "end" : isHorizontal ? "center" : undefined, align: isHorizontal && index === 0 ? "left" : isHorizontal && index === items.length - 1 ? "right" : isHorizontal ? "center" : alignment === "right" ? "right" : undefined, gap: "2", children: _jsxs(_Fragment, { children: [item.label && (_jsx(Text, { variant: "label-default-m", onBackground: state === "danger" ? "danger-weak" : undefined, children: item.label })), item.description && (_jsx(Text, { variant: "body-default-s", onBackground: state === "danger" ? "danger-weak" : "neutral-weak", children: item.description })), item.children] }) })] }, index));
|
|
24
|
+
}) }));
|
|
25
|
+
};
|
|
26
|
+
Timeline.displayName = "Timeline";
|
|
27
|
+
export { Timeline };
|
|
28
|
+
//# sourceMappingURL=Timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Timeline.js","sourceRoot":"","sources":["../../src/components/Timeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { ReactNode } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { Row } from ".";
|
|
3
3
|
import { IconName } from "../icons";
|
|
4
|
-
interface TooltipProps extends React.ComponentProps<typeof
|
|
4
|
+
interface TooltipProps extends React.ComponentProps<typeof Row> {
|
|
5
5
|
label: ReactNode;
|
|
6
6
|
prefixIcon?: IconName;
|
|
7
7
|
suffixIcon?: IconName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrD,OAAO,EAAQ,GAAG,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,UAAU,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC;IAC7D,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,OAAO,kGAoCZ,CAAC;AAIF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import {
|
|
4
|
+
import { Icon, Row } from ".";
|
|
5
|
+
import styles from "./Tooltip.module.scss";
|
|
5
6
|
const Tooltip = forwardRef(({ label, prefixIcon, suffixIcon, className, style, ...flex }, ref) => {
|
|
6
|
-
return (_jsxs(
|
|
7
|
+
return (_jsxs(Row, { m: { hide: true }, ref: ref, style: {
|
|
7
8
|
whiteSpace: "nowrap",
|
|
8
9
|
userSelect: "none",
|
|
9
10
|
...style,
|
|
10
|
-
}, vertical: "center", gap: "4", zIndex: 1, background: "surface", paddingY: "4", paddingX: "8", radius: "s", border: "neutral-medium", role: "tooltip", className: classNames(className), ...flex, children: [prefixIcon && _jsx(Icon, { name: prefixIcon, size: "xs" }), _jsx(
|
|
11
|
+
}, vertical: "center", gap: "4", zIndex: 1, background: "surface", paddingY: "4", paddingX: "8", radius: "s", border: "neutral-medium", role: "tooltip", className: classNames(styles.fadeIn, className), ...flex, children: [prefixIcon && _jsx(Icon, { name: prefixIcon, size: "xs" }), _jsx(Row, { paddingX: "2", vertical: "center", textVariant: "body-default-xs", onBackground: "neutral-strong", children: label }), suffixIcon && _jsx(Icon, { name: suffixIcon, size: "xs" })] }));
|
|
11
12
|
});
|
|
12
13
|
Tooltip.displayName = "Tooltip";
|
|
13
14
|
export { Tooltip };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../src/components/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC;AAE9B,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAU3C,MAAM,OAAO,GAAG,UAAU,CACxB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IACpE,OAAO,CACL,MAAC,GAAG,IACF,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EACjB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE;YACL,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,MAAM;YAClB,GAAG,KAAK;SACT,EACD,QAAQ,EAAC,QAAQ,EACjB,GAAG,EAAC,GAAG,EACP,MAAM,EAAE,CAAC,EACT,UAAU,EAAC,SAAS,EACpB,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAC,GAAG,EACZ,MAAM,EAAC,GAAG,EACV,MAAM,EAAC,gBAAgB,EACvB,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAC3C,IAAI,aAEP,UAAU,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,IAAI,GAAG,EACnD,KAAC,GAAG,IACF,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAC,QAAQ,EACjB,WAAW,EAAC,iBAAiB,EAC7B,YAAY,EAAC,gBAAgB,YAE5B,KAAK,GACF,EACL,UAAU,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,IAAI,GAAG,IAC/C,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Text } from ".";
|
|
3
|
+
export interface TypeFxProps extends Omit<React.ComponentProps<typeof Text>, 'children'> {
|
|
4
|
+
words: string | string[];
|
|
5
|
+
speed?: number;
|
|
6
|
+
delay?: number;
|
|
7
|
+
hold?: number;
|
|
8
|
+
trigger?: "instant" | "custom";
|
|
9
|
+
onTrigger?: (triggerFn: () => void) => void;
|
|
10
|
+
loop?: boolean;
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
}
|
|
13
|
+
declare const TypeFx: React.FC<TypeFxProps>;
|
|
14
|
+
export { TypeFx };
|
|
15
|
+
//# sourceMappingURL=TypeFx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeFx.d.ts","sourceRoot":"","sources":["../../src/components/TypeFx.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAEzB,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC;IACtF,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAiIjC,CAAC;AAIF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useRef, useCallback } from "react";
|
|
4
|
+
import { Text } from ".";
|
|
5
|
+
const TypeFx = ({ words, speed = 100, delay = 0, hold = 2000, trigger = "instant", onTrigger, loop = true, children, ...text }) => {
|
|
6
|
+
const [displayText, setDisplayText] = useState("");
|
|
7
|
+
const [isComplete, setIsComplete] = useState(false);
|
|
8
|
+
const isRunningRef = useRef(false);
|
|
9
|
+
const timeoutRef = useRef(null);
|
|
10
|
+
const hasTriggeredRef = useRef(false);
|
|
11
|
+
const prevWordsRef = useRef(words);
|
|
12
|
+
// Store config in refs to avoid re-creating typeText on every prop change
|
|
13
|
+
const configRef = useRef({ speed, delay, hold, loop });
|
|
14
|
+
configRef.current = { speed, delay, hold, loop };
|
|
15
|
+
const wordsRef = useRef(Array.isArray(words) ? words : [words]);
|
|
16
|
+
wordsRef.current = Array.isArray(words) ? words : [words];
|
|
17
|
+
const typeText = useCallback(async () => {
|
|
18
|
+
if (isRunningRef.current)
|
|
19
|
+
return;
|
|
20
|
+
hasTriggeredRef.current = true;
|
|
21
|
+
isRunningRef.current = true;
|
|
22
|
+
const wordsArray = wordsRef.current;
|
|
23
|
+
const isSingleWord = wordsArray.length === 1;
|
|
24
|
+
const { speed, delay, hold, loop } = configRef.current;
|
|
25
|
+
// Initial delay
|
|
26
|
+
if (delay > 0) {
|
|
27
|
+
await new Promise((resolve) => {
|
|
28
|
+
timeoutRef.current = window.setTimeout(resolve, delay);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
let currentIndex = 0;
|
|
32
|
+
while (true) {
|
|
33
|
+
const currentWord = wordsArray[currentIndex];
|
|
34
|
+
// Type out the word
|
|
35
|
+
for (let i = 0; i <= currentWord.length; i++) {
|
|
36
|
+
if (!isRunningRef.current)
|
|
37
|
+
return;
|
|
38
|
+
setDisplayText(currentWord.substring(0, i));
|
|
39
|
+
await new Promise((resolve) => {
|
|
40
|
+
timeoutRef.current = window.setTimeout(resolve, speed);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// If single word, stop here
|
|
44
|
+
if (isSingleWord) {
|
|
45
|
+
setIsComplete(true);
|
|
46
|
+
isRunningRef.current = false;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Hold the complete text
|
|
50
|
+
await new Promise((resolve) => {
|
|
51
|
+
timeoutRef.current = window.setTimeout(resolve, hold);
|
|
52
|
+
});
|
|
53
|
+
// Delete the word
|
|
54
|
+
for (let i = currentWord.length; i >= 0; i--) {
|
|
55
|
+
if (!isRunningRef.current)
|
|
56
|
+
return;
|
|
57
|
+
setDisplayText(currentWord.substring(0, i));
|
|
58
|
+
await new Promise((resolve) => {
|
|
59
|
+
timeoutRef.current = window.setTimeout(resolve, speed / 2); // Delete faster
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
// Move to next word
|
|
63
|
+
currentIndex = (currentIndex + 1) % wordsArray.length;
|
|
64
|
+
// If not looping and we're back at the start, stop
|
|
65
|
+
if (!loop && currentIndex === 0) {
|
|
66
|
+
isRunningRef.current = false;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// Small pause before typing next word
|
|
70
|
+
await new Promise((resolve) => {
|
|
71
|
+
timeoutRef.current = window.setTimeout(resolve, speed);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}, []); // Empty deps since all values are in refs
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (trigger === "instant" && !hasTriggeredRef.current) {
|
|
77
|
+
hasTriggeredRef.current = true;
|
|
78
|
+
typeText();
|
|
79
|
+
}
|
|
80
|
+
else if (trigger === "custom" && onTrigger && !hasTriggeredRef.current) {
|
|
81
|
+
hasTriggeredRef.current = true;
|
|
82
|
+
onTrigger(typeText);
|
|
83
|
+
}
|
|
84
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
85
|
+
}, []); // Only run on mount - typeText is stable via useCallback
|
|
86
|
+
// Reset when words actually change
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
// Check if words actually changed
|
|
89
|
+
const wordsChanged = prevWordsRef.current !== words;
|
|
90
|
+
if (!wordsChanged)
|
|
91
|
+
return;
|
|
92
|
+
prevWordsRef.current = words;
|
|
93
|
+
isRunningRef.current = false;
|
|
94
|
+
hasTriggeredRef.current = false;
|
|
95
|
+
if (timeoutRef.current !== null) {
|
|
96
|
+
clearTimeout(timeoutRef.current);
|
|
97
|
+
}
|
|
98
|
+
setDisplayText("");
|
|
99
|
+
setIsComplete(false);
|
|
100
|
+
}, [words]);
|
|
101
|
+
return (_jsxs(Text, { ...text, children: [children, displayText, !isComplete && _jsx("span", { style: { opacity: 0.5 }, children: "|" })] }));
|
|
102
|
+
};
|
|
103
|
+
TypeFx.displayName = "TypeFx";
|
|
104
|
+
export { TypeFx };
|
|
105
|
+
//# sourceMappingURL=TypeFx.js.map
|